package com.insigma.business.qrcode.merchant.service;

import com.insigma.business.qrcode.common.template.BasePagingResponse;
import com.insigma.business.qrcode.common.vo.BaseResponse;
import com.insigma.business.qrcode.merchant.dto.CareWelfareMerchantEntryApplyDTO;
import com.insigma.business.qrcode.merchant.dto.CareWelfareMerchantInfoLogDTO;
import com.insigma.business.qrcode.merchant.dto.request.*;
import com.insigma.business.qrcode.soldier.request.BaseGetRequest;
import com.insigma.business.qrcode.welfare.dto.CareWelfareMerchantDiscountDTO;
import com.insigma.business.qrcode.welfare.dto.CareWelfareMerchantInfoDTO;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

public interface MerchantEnterService {

    BaseResponse<Integer> enterApply(CareWelfareMerchantEntryApplyInsertRequest request);

    BasePagingResponse<List<CareWelfareMerchantEntryApplyDTO>> getApplyList(final CareWelfareMerchantEntryApplySearchRequest req);

    BaseResponse<CareWelfareMerchantEntryApplyDTO> getApplyDetail(final BaseGetRequest baseGetRequest);

    BaseResponse<Integer> enterAudit(CareWelfareMerchantEntryApplyUpdateRequest updateRequest);

    BasePagingResponse<List<CareWelfareMerchantInfoDTO>> managerSearch(CareWelfareMerchantInfoSearchRequest searchRequest);

    BaseResponse<CareWelfareMerchantInfoDTO> getManagerDetail(BaseGetRequest baseGetRequest);

    BaseResponse<Integer> managerUpdate(CareWelfareMerchantInfoUpdateRequest updateRequest);

    BasePagingResponse<List<CareWelfareMerchantInfoDTO>> outSearch(CareWelfareMerchantInfoSearchRequest searchRequest);

    BaseResponse<CareWelfareMerchantInfoDTO> getOutDetail(BaseGetRequest baseGetRequest);

    BaseResponse<Integer> outUpdate(CareWelfareMerchantInfoUpdateRequest updateRequest);

    BaseResponse<Integer> cancelEnter(CareWelfareMerchantInfoUpdateRequest updateRequest);

    BasePagingResponse<List<CareWelfareMerchantInfoDTO>> searchOutWait(CareWelfareMerchantInfoSearchRequest searchRequest);

    BaseResponse<Integer> outAudit(CareWelfareMerchantInfoUpdateRequest updateRequest);

    void exportApplyList(HttpServletResponse httpServletResponse, CareWelfareMerchantEntryApplySearchRequest request);

    BaseResponse<Integer> managerPublish(CareWelfareMerchantInfoUpdateRequest updateRequest);

    BaseResponse<Integer> reApply(CareWelfareMerchantInfoUpdateRequest updateRequest);

    BasePagingResponse<List<CareWelfareMerchantInfoLogDTO>> getUpdateLog(CareWelfareMerchantInfoLogSearchRequest careWelfareMerchantInfoLogSearchRequest);

    BaseResponse<Integer> outApply(CareWelfareMerchantInfoUpdateRequest updateRequest);

    BaseResponse<Integer> updateCareWelfareMerchantDiscount(CareWelfareMerchantDiscountUpdateRequest careWelfareMerchantDiscountUpdateRequest);

    BaseResponse<String> insertCareWelfareMerchantDiscount(CareWelfareMerchantDiscountInsertRequest careWelfareMerchantDiscountInsertRequest);

    BaseResponse<CareWelfareMerchantDiscountDTO> getCareWelfareMerchantDiscount(BaseGetRequest baseGetRequest);

    BasePagingResponse<List<CareWelfareMerchantDiscountDTO>> getCareWelfareMerchantDiscountList(CareWelfareMerchantDiscountSearchRequest baseGetRequest);
}
